Pausing and resuming a three-dimensional printjob

ABSTRACT

A computer program product includes computer readable program code embodied on a computer readable storage medium. The computer program product comprises computer readable program code for beginning a print job on a three-dimensional printer to manufacture an object, computer readable program code for pausing the print job while the object is incomplete, computer readable program code for determining the state of the print job when the print job was paused, and computer readable program code for printing information onto the incomplete object, wherein the information includes an identification of the print job. The information preferably takes the form of a matrix barcode printed on a surface of the incomplete object that will later be overwritten.

BACKGROUND

1. Field of the Invention

The present invention relates to methods of three-dimensional printing.

2. Background of the Related Art

Three-dimensional (3D) printing is a process of making athree-dimensional object from a digital model using an additive process,where successive layers of material are laid down over previous layers.The material may be a thermoplastic polymer filament that is heated andextruded through a narrow nozzle. Either the nozzle is moved or a tablesupporting the material is moved to control where the material isdeposited.

3D printing is becoming a big industry with a growing number of printermanufacturers and web sites that provide construction plans fordownloading to a computer. Unfortunately, 3D printing is much morecomplex than 2D printing are requires much more time to product anobject. Objects that are printed at a fine level of detail and are nottiny can take many hours to complete. Ideally, a 3D print job is notstarted unless there is enough time and materials to complete the job.However, work schedules, power outages, material shortages and the likemay prevent a 3D print job from proceeding straight through from startto finish.

Some printers allow you to pause printing and resume, as long as youleave the printer on and don't move the object that is awork-in-progress. Accidentally moving the incomplete object relative tothe table will cause the rest of the print job to be misaligned with theinitial part of the object. However, a 3D print job may need to bepaused in order to change or replace a plastic filament that is used tomake the object or to simply stop and complete the job at a later time.

BRIEF SUMMARY

One embodiment of the present invention provides a computer programproduct including computer readable program code embodied on a computerreadable storage medium. The computer program product comprises computerreadable program code for beginning a print job on a three-dimensionalprinter to manufacture an object, computer readable program code forpausing the print job while the object is incomplete, computer readableprogram code for determining the state of the print job when the printjob was paused, and computer readable program code for printinginformation onto the incomplete object, wherein the information includesan identification of the print job and the state of the print job.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a diagram of a computer controlling a three-dimensionalprinter.

FIG. 2 is a diagram of a computer according to one embodiment of thepresent invention.

FIG. 3A is a diagram of an incomplete object having a matrix barcodeprinted on the incomplete object.

FIG. 3B is a diagram of a completed object having overwritten the matrixbarcode.

FIG. 4 is a flowchart of a method in accordance with one embodiment ofthe present invention.

DETAILED DESCRIPTION

One embodiment of the present invention provides a method comprisingbeginning a print job on a three-dimensional printer to manufacture anobject, pausing the print job while the object is incomplete,determining the state of the print job when the print job was paused,and printing information onto the incomplete object, wherein theinformation includes an identification of the print job and the state ofthe print job.

In one option, the method may further comprise encoding the informationinto a barcode (such as a matrix barcode or quick response (QR)barcode), wherein printing the information onto the incomplete objectincludes printing the barcode onto the incomplete object. Similarly, theinformation may be associated with any unique identifier printed on theincomplete object, perhaps as simple as a number or symbol. The uniqueidentifier is associated with print job details stored in a recordaccessible to the computer or printer. Accordingly, the uniqueidentifier is read and then used to lookup information about the printjob. As used herein, the term barcode is intended to encompass any typeof barcode, include traditional barcodes (such as UPC-A standardbarcodes), matrix barcodes, and other symbology. While a barcode istypically considered to be a two-dimensional code, printing a barcodewith a plastic material results in raised portions or bars such that thecode takes on a three-dimensional character.

In a further option, the information is printed on the incomplete objectin an area that will be overwritten when the print job resumes.Accordingly, the information may not appear on the completed object. Theinformation may be printed on the incomplete object using the samematerial that is being used to manufacture the object. When the printjob is resumed, the printer will preferably consider the raised areas ofthe information or QR code. In another option, the information may beprinted on an area of the incomplete object that is oriented toward afront of the three-dimensional printer, or in a direction or orientationwhere a fixed camera can view and read the information.

The information printed onto the incomplete object may be enoughinformation to resume the print job without duplicating any of theconstruction. Accordingly, the information may include an identificationof the print job and the state of the print job, where theidentification of the print job identifies a print file, and the stateof the print job identifies the point in the print file where the printjob was paused. A print job differs from a print file in that there is aunique print job each time a print file is submitted for printing. Theinformation printed on the incomplete object may also include printoptions that were used for printing the incomplete object. For example,print options may include a print resolution.

Alternatively, the information printed onto the incomplete object may beany unique identifier that the computer or printer can read andassociate with a record stored in memory accessible to the computer orprinter. The unique identifier may, without limitation, be selected froma barcode or a code made up of alphabetic characters, numerals, or both.The stored record associated with the unique identifier would alsoinclude an identification of the print file, the state of the print job,and any print options that were used for printing the incomplete object.Accordingly, when the incomplete object is returned to the printer, theprinter or computer may use a camera to read the unique identifier andthen use the unique identifier to recall the associated record thatcontains all of the information needed to resume the print job.

In another embodiment of the method, the information may be periodicallyprinted onto the incomplete object without receiving a pauseinstruction. Accordingly, at one or more stages of printing, theinformation is printed onto the incomplete object as a precaution incase the printing is paused or otherwise interrupted.

When a print job has been paused, the incomplete object may be removedfrom the three-dimensional printer. Accordingly, the three-dimensionalprinter may be used to print another print job before returning theincomplete object to the printer to be completed. Alternatively, otherprocessing may be performed on the incomplete object after pausing theprint job and before resuming the print job. For example, the otherprocessing may include inserting a part into the incomplete object.

Embodiments of the present invention may further include returning theincomplete object to the three-dimensional printer, reading theinformation printed on the incomplete object, and resuming the print jobusing the information printed on the incomplete object and a copy of theprint file stored in memory accessible to the three-dimensional printer.The information preferably includes the identification of the printfile, the state of the print filed at which the print job was paused,and the print options used in printing the incomplete object.Preferably, the information printed on the incomplete object may be readby a camera, which is optionally secured to the three-dimensionalprinter.

In various embodiment, the information printed on the incomplete objectmay be used to determine the alignment of the incomplete object withinthe printer when the incomplete object is returned to the printer.Alternatively, a separate alignment marker may be printed on theincomplete object, wherein the alignment marker is used to determine thealignment of the incomplete object in the three-dimensional printer. Itmay be preferred to always print the information or an alignment markerin a particular orientation and always return the incomplete object tothe printer in the same orientation. However, it is also possible toreturn the incomplete object to the printer in any orientation, read theinformation or alignment marker to determine the orientation of theincomplete object, and convert the print job instructions to use the neworientation.

In a further embodiment, the method may further include establishingstop points within the print job, wherein pausing the print job allowsthe print job to continue to the next stop point in the print job. Astop point is a point within the program code of the print file that mayrepresent a particularly good point in the process for stopping theprint job. For example, a stop point may be selected where aparticularly complex portion of the object has been finished, wherethere is a planned substitution of the plastic filament, or where thereis a suitable surface for printing the information where the informationis subsequently printed over. One method may allow selection of a stoppoint that is after the next stop point at which to pause the print job.Accordingly, when a user is pausing the print job, they may also selectwhich stop point should be used for pausing the print job.

A non-limiting hypothetical example is provided, as follows, toillustrate how the present invention may be beneficially used. Bob juststarted printing a large model on his 3D printer, which should takearound 14 hours, given the printing resolution he is using. After 5hours, he realizes he needs to print another, small piece to complete aproject he is working on, but does not want to wait the remaining 9hours or waste the existing progress on the model. So Bob pushes thepause button, which causes the printer to reach a stop point and printthe state of the print job on the printed object for later use. Afterprinting the small object, he places the large model back on the printerand causes the printer to resume. The printer reads and uses the stateinformation on the model in order to continue making the large model asthe point where it left off.

Another embodiment of the present invention provides a computer programproduct including computer readable program code embodied on a computerreadable storage medium. The computer program product comprises computerreadable program code for beginning a print job on a three-dimensionalprinter to manufacture an object, computer readable program code forpausing the print job while the object is incomplete, computer readableprogram code for determining the state of the print job when the printjob was paused, and computer readable program code for printinginformation onto the incomplete object, wherein the information includesan identification of the print job and the state of the print job.

The foregoing computer program products may further include computerreadable program code for implementing or initiating any one or moreaspects of the methods described herein. Accordingly, a separatedescription of the methods will not be duplicated in the context of acomputer program product.

FIG. 1 is a diagram of a system 10 including a computer 20 controlling athree-dimensional printer 30. This three-dimensional printer 30 includesa filament spool 32 for supplying a plastic filament 34 into an extruder36. The heated plastic is pushed through a nozzle 38 onto a print bed ortable 40 where the object is printed. As shown, the object 60 hasalready received a number of layers of plastic material, such that thenozzle is some distance above the table 40.

The position of the tip of the nozzle 38 determines where a thin layerof the plastic material will be placed. As the plastic passes throughthe nozzle 38, the nozzle 38 may be moved back and forth along an X-axisby an X-axis motor 42, and the table 40 may be moved back and forthalong a Y-axis by a Y-axis motor 44. As each layer has been completed inthe X-Y plane, the table may be moved down along a Z-axis by a Z-axismotor 46 so that another layer of the plastic may be applied through thenozzle moving in along the X-axis while the object or work piece ismoved along with the table along the Y-axis. The printer also includesstructural members that guide the nozzle along the X-axis, guide thetable along the Y-axis, and guide the table along the Z-axis. Thecomputer 20 provides instructions to the printer 30 to operate theX-axis motor 42, the Y-axis motor 44, and the X-axis motor 46 in amanner that positions the nozzle 38 where is can progressively build theobject.

FIG. 2 is a diagram of an exemplary computer 20 that may be used inaccordance with one embodiment of the present invention. The computer 20includes a processor unit 104 that is coupled to a system bus 106.Processor unit 104 may utilize one or more processors, each of which hasone or more processor cores. A video adapter 108, which drives/supportsa display 22, is also coupled to system bus 106. The system bus 106 iscoupled via a bus bridge 112 to an input/output (I/O) bus 114. An I/Ointerface 116 is coupled to I/O bus 114. I/O interface 116 affordscommunication with various I/O devices, including a keyboard 23, a mouse24, a camera 25 and a 3D printer 30. The I/O devices may optionallyinclude storage devices, such as CD-ROM drives and multi-mediainterfaces, other printers, and external USB port(s). While the formatof the ports connected to I/O interface 116 may be any known to thoseskilled in the art of computer architecture, in a preferred embodimentsome or all of these ports are universal serial bus (USB) ports. Asdepicted, the computer 20 is able to communicate over a network 38 usinga network interface 130. The network 38 may be an external network, suchas the global communication network, and perhaps also an internalnetwork such as an Ethernet LAN or a virtual private network (VPN).

A hard drive interface 132 is also coupled to system bus 106 andinterfaces with a hard drive 134. In a preferred embodiment, the harddrive 134 populates a system memory 136, which is also coupled to systembus 106. System memory is defined as a lowest level of volatile memoryin computer 100. This volatile memory includes additional higher levelsof volatile memory (not shown), including, but not limited to, cachememory, registers and buffers. Data that populates system memory 136includes the computer's operating system (OS) 138 and applicationprograms 144.

The operating system 138 includes a shell 140, for providing transparentuser access to resources such as application programs 144. Generally,shell 140 is a program that provides an interpreter and an interfacebetween the user and the operating system. More specifically, shell 140executes commands that are entered into a command line user interface orfrom a file. Thus, shell 140, also called a command processor, isgenerally the highest level of the operating system software hierarchyand serves as a command interpreter. The shell provides a system prompt,interprets commands entered by keyboard, mouse, or other user inputmedia, and sends the interpreted command(s) to the appropriate lowerlevels of the operating system (e.g., a kernel 142) for processing. Notethat while shell 140 is a text-based, line-oriented user interface, thepresent invention will equally well support other user interface modes,such as graphical, voice, gestural, etc.

As depicted, the OS 138 also includes a kernel 142, which includes lowerlevels of functionality for OS 138, including providing essentialservices required by other parts of OS 138 and application programs 144,including memory management, process and task management, diskmanagement, and mouse and keyboard management. The application programs144 in the system memory of the computer 20 may include various programsand modules for implementing the methods described herein, such as the3D printer control logic 82, the 3D print files 84, and the paused printjobs 86 (each print job including identification of a print file, stateat which the print job was paused, and any print options used duringprinting).

The hardware elements depicted in computer 20 are not intended to beexhaustive, but rather are representative components suitable to performthe processes of the present invention. For instance, computer 20 mayinclude alternate memory storage devices such as magnetic cassettes,digital versatile disks (DVDs), Bernoulli cartridges, and the like.These and other variations are intended to be within the spirit andscope of the present invention.

FIG. 3A is a diagram of an incomplete object 60 (i.e., the base of theStatue of Liberty) having a matrix barcode 62 printed on a surface 64 ofthe incomplete object. The matrix barcode 62 has been enlarged and shownto the right. Information about the print job may be encoded into thematrix barcode 62, such as a unique print job identification. In someembodiments, the information may actually identify the print job by aprint file, state of execution of the print file when paused, and anyprint option used during the print job. Furthermore, one or moreelements of the matrix barcode 62 may also serve as an alignment markerso that the printer can determine the orientation of the object 60 uponits return into the printer.

FIG. 3B is a diagram of a completed object 60 (i.e., the entire Statueof Liberty) having overwritten the matrix barcode (see barcode 62 inFIG. 3A). Preferably, when the print job is resumed, the printer willfill in the gaps between the raised portions of the matrix barcode 62that was printed on the surface 64. As a result, no material is wastedand the matrix barcode does not appear on the completed object.

FIG. 4 is a flowchart of a method 70 in accordance with one embodimentof the present invention. In step 72, the method begins a print job on athree-dimensional printer to manufacture an object. In step 74, theprint job is paused while the object is incomplete. The method then, instep 76, determines the state of the print job when the print job waspaused, and prints information onto the incomplete object in step 78,wherein the information includes an identification of the print job andthe state of the print job.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing. Computer program code for carrying out operations foraspects of the present invention may be written in any combination ofone or more programming languages, including an object orientedprogramming language such as Java, Smalltalk, C++ or the like andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The program codemay execute entirely on the user's computer, partly on the user'scomputer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer or entirely on the remotecomputer or server. In the latter scenario, the remote computer may beconnected to the user's computer through any type of network, includinga local area network (LAN) or a wide area network (WAN), or theconnection may be made to an external computer (for example, through theInternet using an Internet Service Provider).

Aspects of the present invention may be described with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, and/or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,components and/or groups, but do not preclude the presence or additionof one or more other features, integers, steps, operations, elements,components, and/or groups thereof. The terms “preferably,” “preferred,”“prefer,” “optionally,” “may,” and similar terms are used to indicatethat an item, condition or step being referred to is an optional (notrequired) feature of the invention.

The corresponding structures, materials, acts, and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material, or act for performing the functionin combination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but it is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A computer program product including computer readable program codeembodied on a non-transitory computer readable storage medium, thecomputer program product comprising: computer readable program code forbeginning a print job on a three-dimensional printer to manufacture anobject; computer readable program code for pausing the print job whilethe object is incomplete; computer readable program code for determiningthe state of the print job when the print job was paused; and computerreadable program code for printing information onto the incompleteobject, wherein the information includes an identification of the printjob and the state of the print job.
 2. The computer program product ofclaim 1, further comprising: computer readable program code for encodingthe information into a barcode, wherein the computer readable programcode for printing the information onto the incomplete object includescomputer readable program code for printing the barcode onto theincomplete object.
 3. The computer program product of claim 1, whereinthe information printed on the incomplete object includes print optionsthat were used for printing the incomplete object.
 4. The computerprogram product of claim 3, wherein the print options include a printresolution.
 5. The computer program product of claim 1, wherein theinformation is printed on the incomplete object in an area that will beprinted over when the print job resumes.
 6. The computer program productof claim 5, wherein the information is printed on the incomplete objectusing the same material that is being used to manufacture the object. 7.The computer program product of claim 1, wherein the information isprinted on an area of the incomplete object that is oriented toward afront of the three-dimensional printer.
 8. The computer program productof claim 1, further comprising: computer readable program code forstoring the information in a memory accessible to the three-dimensionalprinter in association with a print job identifier.
 9. The computerprogram product of claim 1, wherein the information is periodicallyprinted onto the incomplete object without receiving a pauseinstruction.
 10. The computer program product of claim 1, furthercomprising: computer readable program code for printing another objecton the three-dimensional printer after removing the incomplete object.11. The computer program product of claim 10, further comprising:computer readable program code for reading the information printed onthe incomplete object after returning the incomplete object into thethree-dimensional printer; and computer readable program code forresuming the print job using the information read from the incompleteobject and a copy of the print file stored in memory accessible to thethree-dimensional printer.
 12. The computer program product of claim 11,wherein the information includes the identification of the print file,the state of the print filed at which the print job was paused, and theprint options used in printing the incomplete object.
 13. The computerprogram product of claim 11, wherein the information printed on theincomplete object is read by a camera.
 14. The computer program productof claim 11, wherein the information printed on the incomplete object isused to determine the alignment of the object within the printer. 15.The computer program product of claim 11, further comprising: computerreadable program code for printing an alignment marker on the incompleteobject, wherein the alignment marker is used to detect the alignment ofthe incomplete object in the three-dimensional printer.
 16. The computerprogram product of claim 15, further comprising: computer readableprogram code for detecting a position of the alignment marker anddetermining whether the alignment marker indicates that the incompleteobject is in a predetermined position.
 17. The computer program productof claim 16, further comprising: computer readable program code forrepositioning the incomplete object within the printer so that thealignment marker indicates that the incomplete object is located in apredetermined position or directed in a predetermined direction.
 18. Thecomputer program product of claim 1, further comprising: computerreadable program code for establishing stop points within the print job,wherein pausing the print job allows the print job to continue to thenext stop point in the print job.
 19. The computer program product ofclaim 18, wherein the stop points provide a suitable surface forprinting the information.
 20. The computer program product of claim 18,further comprising: computer readable program code for selecting a stoppoint after the next stop point at which to pause the print job.